﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Systemet.Domain
{
    class KontoController
    {
        private Views.PersonalrelateradeKostnader persMain;
        //private Views.Direktkostnadsbudgetering DirKostBudg;
        private Technical.KostnadsbudConnection kCon;
        //private IEnumerable<Kontoregister> konton;

        private Technical.KostnadsbudConnection konCon;

        public object updateBudResDGV()
        {
            konCon = new Technical.KostnadsbudConnection();
            persMain = (Views.PersonalrelateradeKostnader)AccessController.Instance.MainView;
            object konton = konCon.GetFilteredAccountsAndSchablon("0", "9999");
            return konton;
        }

        //Använder sig av den lokala klassen Konto då vi får Null-point-exception på t.ex. KostnadskontoRegister 
        //när vi försöker använda Kontoregister.KostnadskontoRegister.schablon
        public List<Konto> SearchUpdate(string kontonummerfran, string kontonummertill)
        {
            persMain = (Views.PersonalrelateradeKostnader)AccessController.Instance.MainView;
            kCon = new Technical.KostnadsbudConnection();
            List<Konto> listOfKontoAndKostnadskonto = new List<Konto>(kCon.GetKonto(kontonummerfran, kontonummertill));
            return listOfKontoAndKostnadskonto;
        }

        public object UpdateSchablon(string kontonummer, int schablon)
        {
            persMain = (Views.PersonalrelateradeKostnader)AccessController.Instance.MainView;
            kCon = new Technical.KostnadsbudConnection();
            kCon.Schablon(kontonummer, schablon);
            return updateBudResDGV();
        }

        public void SetFocusInDGW(string benämning, IEnumerable<Kontoregister> konton)
        {
            persMain = (Views.PersonalrelateradeKostnader)AccessController.Instance.MainView;

            foreach (Kontoregister k in konton)
            {
                if (k.kontobenämning == benämning)
                {
                    persMain.SetFocusOnKonto(k.kontonummer);
                    break;
                }
            }
        }


        public IEnumerable<Kontoregister> RetrieveKontoben()
        {
            kCon = new Technical.KostnadsbudConnection();
            IEnumerable<Kontoregister> kontoBen = kCon.getKonton();
            return kontoBen;
        }
    }
}
